package operation.visitor.obj;

import java.util.ArrayList;
import java.util.List;

import operation.visitor.abs.AbsPerson;
import operation.visitor.abs.IAction;

public class PersonGroup {
    private List<AbsPerson> persons = new ArrayList<>();

    public void add(AbsPerson person) {
        persons.add(person);
    }

    public void remove(AbsPerson person) {
        persons.remove(person);
    }

    /**
     * @param action 访问者，即操作元素的对象
     */
    public void display(IAction action) {
        // 对象结构中的每一个元素，提供接收访问者的接口
        // 接收访问者，然后访问者操作元素
        for (AbsPerson p : persons) {
            p.accept(action);
        }
    }
}
